package com.syh.jn.scm.dto.supplier.stock;

import lombok.Data;
import javax.validation.constraints.NotEmpty;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 报损单新增
 */
@Data
public class StockLossSto implements Serializable {
  /**
   * 数据归属公司ID
   */
  @NotNull(message = "数据归属公司ID不能为空")
  private Long businessEntityId;
  /**
   * 对应单号
   */
  private String originalOrderCode;
  /**
   * 报损类型(1:销售运输报损 2:采购运输报损 3:销售退货运输报损 4:采购退货运输报损)
   */
  private Short lossType;
  /**
   * 对应单id
   */
  private Long originalOrderId;
  /**
   * 录单日期
   */
  @NotNull(message = "录单日期不能为空")
  private Long inputDateTimestamp;
  /**
   * 仓库id
   */
  @NotNull(message = "仓库不能为空")
  private Long storehouseId;
  /**
   * 备注
   */
  private String remark;
  /**
   * 客户id
   */
  private Long customerBusinessId;
  /**
   * 录单人员id
   */
  @NotNull(message = "录单人员id不能为空")
  private Long operatorId;
  /**
   * 报损项
   */
  @NotEmpty(message = "报损项不能为空")
  private List<StockLossItemSto> items;

  @Data
  public class StockLossItemSto implements Serializable {
    /**
     * 商品ID
     */
    @NotNull(message = "商品不能为空")
    private Long goodsId;
    /**
     * 商品名称
     */
    private String goodsName;
    /**
     * 库存商品ID
     */
    @NotNull(message = "库存商品不能为空")
    private Long stockGoodsId;
    /**
     * 报损数量
     */
    @NotNull(message = "报损数量不能为空")
    @DecimalMin("1")
    private BigDecimal quantity;
    /**
     * 商品平均单价
     */
    @NotNull(message = "平均单价不能为空")
    @DecimalMin("0")
    private BigDecimal averageCost;
    /**
     * 备注
     */
    private String remark;
  }
}
